#include "Chat.h"
#include "log.h"
#include <stdlib.h>
#include <signal.h>

#define EXIT_ERROR_PARAMETROS 1

void sigusr1Handler (int signum){
    log(stdout, "Senial recibida.\n");
}

int main(int argc, char *argv[]){

    if(argc < 3) {
	log(stdout, "%s <numero usuario> <id conversacion>\n", argv[0]);
	exit(EXIT_ERROR_PARAMETROS);
    }

    int numeroUsuario = atoi(argv[1]);
    int idConversacion = atoi(argv[2]);

    InformacionConversacion* conversacion = ChatObtenerDatosDeConversacion(numeroUsuario, idConversacion);

    std::string mensaje;

    struct sigaction new_action, old_action;
    new_action.sa_handler = sigusr1Handler;
    sigemptyset (&new_action.sa_mask);
    new_action.sa_flags = 0;
    sigaction (SIGUSR1, NULL, &old_action);
    if (old_action.sa_handler != SIG_IGN){
	sigaction (SIGUSR1, &new_action, NULL);
	log(stdout, "OK\n");
    }

    while( (mensaje=ChatRecibirMensaje(conversacion)) != "" ){
     	log(stdout, "%d: Mensaje recibido: %s\n", getpid(), mensaje.c_str());
    }

    ChatLiberarDatosDeConversacion(conversacion);

    log(stdout, "%d: Proceso receptor sale.\n",getpid());

    return 0;
}
